package com.site.utils;

import java.io.Serializable;

/**
 * 标准实体类
 * 私有属性
 * 公开方法
 * 通用返回类（泛型）
 * @param <T>
 */
public class CommonResult<T> implements Serializable {
    private long code;//返回状态码
    private String message;//返回信息
    private T data;//返回数据

    protected CommonResult(){

    }

    public CommonResult(long code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public long getCode() {
        return code;
    }

    public void setCode(long code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    /**
     * 公共成功的信息对象
     * @param data
     * @param <T>
     * @return
     */
    public static <T> CommonResult success(T data){
        return new CommonResult(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMessage(), data);
    }

    /**
     * 自定义成功信息对象
     * @param data
     * @param message
     * @param <T>
     * @return
     */
    public static <T> CommonResult success(T data, String message){
        return new CommonResult(ResultEnum.SUCCESS.getCode(), message, data);
    }

    /**
     * 公共错误消息
     * @param <T>
     * @return
     */
    public static <T> CommonResult failed(){
        return new CommonResult(ResultEnum.FAILED.getCode(), ResultEnum.FAILED.getMessage(),null);
    }

    /**
     * 自定义错误消息
     * @param <T>
     * @return
     */
    public static <T> CommonResult failed(long code, String message){
        return new CommonResult(code,message,null);
    }
}
